package com.gzx.plugin.tjzy.modular.founds.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.founds.bo.GzxFoundsAmountBo;
import com.gzx.plugin.tjzy.modular.founds.bo.GzxFoundsFlowAddBo;
import com.gzx.plugin.tjzy.modular.founds.bo.GzxFoundsFlowQueryBo;
import com.gzx.plugin.tjzy.modular.founds.bo.GzxTransMethodBo;
import com.gzx.plugin.tjzy.modular.founds.vo.GzxFoundsAvailableVo;
import com.gzx.plugin.tjzy.modular.founds.vo.GzxFoundsFlowVo;
import com.gzx.plugin.tjzy.modular.project.entity.vo.GzxProjectVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 充值电话短信流水记录 gzx_founds_flow_record
 *
 * @author xbl
 * &#064;date  2025-03-19
 */
public interface GzxFoundsFlowService {

    //分页
    Page<GzxFoundsFlowVo> page(GzxFoundsFlowQueryBo foundsFlowQueryBo);

    //记录流水
    GzxProjectVo transRecharge(MultipartFile file, GzxFoundsFlowAddBo bo) throws IOException;

    //根据id查询流水记录
    GzxFoundsFlowVo detailFoundsFlow(String id);

    //交易方式：消费
    boolean transConsume(GzxTransMethodBo bo);

    //交易方式：冻结
    boolean transFreeze(GzxTransMethodBo bo);

    //交易方式：解冻
    boolean transUnfreeze(GzxTransMethodBo bo);

    //根据项目代码获取项目的可用余额
    GzxFoundsAvailableVo getAvaliableByCode(String projectCode);

    //查看某个产品的短信花了多少钱
    List<GzxFoundsFlowVo> productAmount(GzxFoundsAmountBo foundsAmountBo);
}
